package com.lpf.custom;

import com.lpf.beans.RainBow;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
import org.springframework.core.type.AnnotationMetadata;

public class MyImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {

    /**
     * 功能描述：在IOC容器中是否有Red和Blue，有的话注册RainBow
     *
     * @param importingClassMetadata 当前类的注解信息
     * @param registry               BeanDefinition注册类。把所有需要添加到容器中的bean，调用registry.registerBeanDefinition手工注册进来
     * @return void
     * @author lpf
     * @since 2019-05-27 22:21:36
     */
    @Override
    public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {

        // 注意：使用 @Import 注册的组件，id默认是全类名。
        boolean definition = registry.containsBeanDefinition("com.lpf.beans.Red");
        boolean definition2 = registry.containsBeanDefinition("com.lpf.beans.Blue");

        if (definition && definition2) {
            //指定Bean定义信息（Bean的类型，Bean的Scope，Bean。。。。）
            RootBeanDefinition beanDefinition = new RootBeanDefinition(RainBow.class);
            //注册一个Bean，指定bean名
            registry.registerBeanDefinition("rainBow", beanDefinition);
        }
    }

}
